FIG. 1 illustrates an example of a client-server transaction across the Internet. One or more clients 10 are connected to Internet 14 through one or more routers 12. Generally, Internet service providers (ISPs) deploy these routers 12 at points of presence (POP) close to their respective users. Often associated with the routers 12 are caches 16. In other cases caches 16 may be deployed independently of a router, for example as part of a proxy server interposed at a gateway to an enterprise network or other closed system.
Regardless of how they are deployed, caches act as information storage devices and generally store content at locations that are physically and/or logically close to users. That way, requests for content that has been previously cached may be serviced from the cache 16, without having to make queries all the way back to an origin server 18 that may be remote from the requesting client. Using caches in this fashion allows requests to be fulfilled more quickly than would be the case if no cache were used and it also helps to reduce congestion within the Internet 14 by reducing the number of requests that must be processed by the origin server 18.
When content (e.g., a web page or the like) is requested for the first time (or for the first time in a predetermined time period, etc.), no replica of that content will be found in cache 16. Nevertheless, the router 12 (if present) will pass the request from one of the clients 10 to the cache because such routers are generally configured by their operators to pass all requests to one or more associated caches (which may be grouped in a hierarchical fashion) before passing the request to the origin server. Where the content is not found in the cache 16, the cache 16 will fetch the content from the origin server 18. Upon receiving a reply from the origin server 18, the router 12 will forward a copy of the content to the cache 16, which will send the object to the requesting client 10 and store a copy of the object if it is a cacheable object. This way, the cache 16 is updated so that later requests for the same content can be serviced from the cache 16 without need to query the origin server 18. This stored replica of the content may be updated periodically, depending on the refresh policies of the cache 16 and the stored content.
As mentioned above, it is common for caches not to cache some forms of content. For example, content that varies depending on user input (e.g., the output of a common gateway interface (cgi) or other script) or content that is designated confidential or is encrypted is not typically cached. In U.S. Pat. No. 6,587,928, which is assigned to the assignee of the present invention, methods and systems for recognizing requests as being made for cacheable or non-cacheable objects, according to information included in a Uniform Resource Locator (URL) associated with the object, are described. However, to date there have not been implemented systems and methods for dealing with objects that are otherwise cacheable, but which still should not be cached (e.g., because doing so would be an inefficient use of cache resources, etc.).